package com.ungao.tools.generator.engine;


import com.ungao.tools.generator.engine.config.TemplateConfig;

import java.util.Map;

public interface TemplateEngine {

    /**
     * 初始化模板配置文件
     *
     * @param configBuilder
     * @return
     * @throws Exception
     */
    TemplateEngine init(TemplateConfig configBuilder) throws Exception;

    /**
     * 将模板转化成为文件
     *
     * @param templatePath 模板文件
     * @param targetPath   文件生成的目录
     * @throws Exception
     */
    void writer(String templatePath, String targetPath) throws Exception;

    /**
     * 将模板转化成为文件
     *
     * @param model        渲染对象信息
     * @param templatePath 模板文件地址
     * @param targetPath   文件生成的目录
     * @throws Exception
     */
    <T> void writer(T model, String templatePath, String targetPath) throws Exception;

    /**
     * 将模板转化成为文件
     *
     * @param resource     渲染对象信息
     * @param templatePath 模板文件地址
     * @param targetPath   文件生成的目录
     * @throws Exception
     */
    void writer(Map<String, Object> resource, String templatePath, String targetPath) throws Exception;

    /**
     * 模板真实文件路径
     *
     * @param filePath 模板文件路径
     * @return
     */
    String templateFilePath(String filePath);
}
